Operating systems, applications, and other forms of software are constantly being changed by their developers. Developers may change software for a variety of reasons, including to enhance the software or to address known problems with the software, such as security flaws or bugs. Developers typically release such changes in the form of software patches or software upgrades. Many developers rigorously test software patches and upgrades prior to release in an attempt to ensure that they adequately achieve their intended purpose without causing any new problems.
Despite such testing, a user of a computing device is typically unable to determine whether a software patch or upgrade will adversely impact the health (e.g., the performance or stability) of the computing device before installing the patch or upgrading the software. For example, a user's computing device may be significantly different from computing devices used by developers during development and testing of the software patch or upgrade, such that the patch or upgrade may impact the health of the user's device in an unexpected manner. Also, because developers may produce patches and upgrades in a relatively short period of time in order to respond to known problems (such as security flaws), developers may decide to forgo extensive testing before releasing the patch or upgrade. Developers may thus fail to discover latent defects in the patch or upgrade prior to release.
For these reasons, administrators of enterprise environments typically rigorously test software patches and upgrades before deploying the patches or upgrades. Unfortunately, computing devices within such an enterprise remain vulnerable to any problems addressed by the patch or upgrade until the administrator has completed testing of the upgrade or patch. Therefore, an administrator may be forced to decide between installing a software patch or upgrade to address a known problem in the software (thereby exposing devices within the enterprise to potentially damaging latent defects in the patch or upgrade) or extensively testing the patch or upgrade for latent defects before deployment (thereby exposing devices within the enterprise to the known software problem until testing is complete). Moreover, because many consumers lack the resources or knowledge to extensively test upgrades or patches, consumers may simply install patches or upgrades as soon as they are released, regardless of the potential negative health impact of the patch or upgrade.